class Empleado < ActiveRecord::Base
  belongs_to :centro
  has_many :puntaje_meseros
  
  validates_presence_of :nombre, :primer_apellido, :fecha_nacimiento, :puesto_id, :on => :create
  validates_length_of :nombre, :primer_apellido, :maximum => 40, :on => :create

  def nombre_completo
    "#{nombre} #{primer_apellido} #{segundo_apellido}".strip unless :segundo_apellido.nil?
    
  end
  
  def puntos_acumulados(inicio=Time.local(2006,1,1), fin=Time.now)
    fecha_inicio = inicio.strftime("%Y-%m-%d")
    fecha_fin = fin.strftime("%Y-%m-%d")
    conditions_abono = [
      "created_at BETWEEN CONVERT(datetime, :fecha_inicio) AND CONVERT(datetime, :fecha_fin) AND operacion = :operacion",
      {:fecha_inicio => fecha_inicio, :fecha_fin => fecha_fin, :operacion => PuntajeMesero::ABONO}
    ]
    conditions_cargo = [
      "created_at BETWEEN CONVERT(datetime, :fecha_inicio) AND CONVERT(datetime, :fecha_fin) AND operacion = :operacion",
      {:fecha_inicio => fecha_inicio, :fecha_fin => fecha_fin, :operacion => PuntajeMesero::CARGO}
    ]
    favor = puntaje_meseros.sum('puntos', :conditions => conditions_abono).to_i
    contra = puntaje_meseros.sum('puntos', :conditions => conditions_cargo).to_i
    logger.debug "Puntos a favor: #{favor}"
    logger.debug "Puntos en contra: #{contra}"
    
    favor - contra
  end
  
end
